package boot

import (
	"express/global"
	"express/internal/model"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"log"
	"time"
)

func init() {
	var err error
	global.DBEngine, err = getConnect()
	if err != nil {
		log.Fatalf("db connect err %+v", err)
	}
}

func getConnect() (*gorm.DB, error) {
	//gorm连接初始化
	dsn := "root:root@tcp(127.0.0.1:3305)/express?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		return nil, err
	}
	err = db.AutoMigrate(&model.User{})
	err = db.AutoMigrate(&model.Parcel{})

	if err != nil {
		return nil, err
	}

	sqlDB, err := db.DB()

	if err != nil {
		return nil, err
	}

	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
	sqlDB.SetMaxIdleConns(10)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Hour)

	return db, nil
}
